package com.class05.config;

import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Swagger3配置类，用于定义API文档的分组和基本信息
 */
@Configuration
@ConditionalOnWebApplication
public class Swagger3Config {

    /**
     * 创建支付微服务模块的API文档分组
     *
     * @return GroupedOpenApi实例，用于配置支付微服务模块的API文档
     */
    @Bean
    public GroupedOpenApi PayApi() {
        return GroupedOpenApi.builder().group("支付微服务模块")
                .pathsToMatch("/pay/**").build();
    }

    /**
     * 创建其它微服务模块的API文档分组
     *
     * @return GroupedOpenApi实例，用于配置其它微服务模块的API文档
     */
    @Bean
    public GroupedOpenApi OtherApi() {
        return GroupedOpenApi.builder().
                group("其它微服务模块").
                pathsToMatch("/other/**", "/others").build();
    }

    /**
     * 创建通用API文档信息
     *
     * @return OpenAPI实例，包含API文档的标题、描述、版本和外部文档链接
     */
    @Bean
    public OpenAPI docsOpenApi() {
        return new OpenAPI()
                .info(new Info().title("cloud2024")
                        .description("通用设计rest")
                        .version("v1.0"))
                .externalDocs(new ExternalDocumentation()
                        .description("www.atguigu.com")
                        .url("https://yiyan.baidu.com/"));
    }
}